import diff from "./diff"

export default class Component {
  constructor(props) {
    this.props = props
  }
  // setState 是基类中定义的方法
  setState(state) {
    // 这里的state是子类的state，因为是子类调用的setState方法
    this.state = Object.assign({}, this.state, state)
    // 调用子类的render方法获取vDom
    let vDom = this.render()
    // 获取旧的DOM对象进行比对
    let oldDom = this.getDom()
    // diff比对，container就是旧节点的父元素
    const container = oldDom.parentNode
    diff(vDom, container, oldDom)
  }
  // 这个方法用来设置旧的vDom
  setDom(dom) {
    this._dom = dom
  }

  getDom() {
    return this._dom
  }
  // 更新props
  updateProps(props) {
    this.props = props
  }

  // 以下都是生命周期函数
  componentDidMount() {}

  shouldComponentUpdate(nextProps, nextState) {
    return nextProps != this.props || nextState != this.state
  }
  componentDidUpdate(prevProps, preState) {}
  componentWillUnmount() {}


}